package org.upm;

/**
 * Clase que inserta una serie de hechos en una base de conocimientos
 * para asi poder elegir el mejor operador con el que realizar la llamada.
 * 
 * @author Rocío Sotomayor
 * @author Jonathan González
 * @version 24/04/2009
 */
public class Tarificador {

    /**
     * Método que inserta una serie de hechos en la base de conocimiento
     * para poder seleccionar el operador y tarifa con el que se realiza la llamada.
     * @param llamada - Llamada para la que hay que elegir operador.
     * @param tarifas - Tarifas entre las que se puede elegir.
     * @throws Exception
     */
    public void seleccionaTarifa(Llamada llamada, Object[] tarifas) throws Exception{
        	Object[] facts = new Object[tarifas.length + 1];
    		facts[0] = llamada;
    		for( int i = 0; i < tarifas.length; i++){
    			facts[i+1] = tarifas[i];
    		}
             
            new RuleRunner().runRules( new String[] { "SeleccionaOperador.drl" }, facts );
            System.out.println("El mejor operador para llamar a " + llamada.getLlamado().getNombre() +
                        " a las " + llamada.getHora() + " es: " + llamada.getTarifa().getOperador()
                        + " con la tarifa: " + llamada.getTarifa().getNombre());

        }

}
